mod common;
use crate::common::dourl;
use serde_json::json;

#[tokio::test]
async fn t1() {
    let ret = dourl(
        json!([{
            "id": "cus1",
            "v": [{
                "k": "psn",
                "m": "msn",
                "t": "int16",
            }, {
                "k": "pid",
                "m": "mid",
                "c": 2,
                "t": "int16",
            }]
        }, {
            "id": "cus2",
            "v": [{
                "k": "psn",
                "m": "msn",
                "t": "int16",
            }]
        }]),
        "custom",
        "add",
    )
    .await
    .expect("add");
    assert_eq!(ret, json!("Success"));

    let ret = dourl(
        json!({
            "id": "cus1",
        }),
        "custom",
        "del",
    )
    .await
    .expect("del");
    assert_eq!(ret, json!("Success"));

    let ret = dourl(json!({}), "custom", "list").await.expect("list");
    assert_eq!(
        ret,
        json!([{
            "id": "cus2",
            "v": [{
                "k": "psn",
                "m": "msn",
                "t": "int16",
            }]
        }])
    );

    let ret = dourl(
        json!([{
            "old": "cus2",
            "id": "cus",
            "v": [{
                "k": "psn",
                "m": "psn",
                "t": "string",
            }, {
                "k": "sn",
                "m": "sn",
                "t": "string",
            }, {
                "k": "usn",
                "m": "usn",
                "t": "string",
            }, {
                "k": "name",
                "m": "name",
                "t": "string",
            }]
        }]),
        "custom",
        "add",
    )
    .await
    .expect("add");
    assert_eq!(ret, json!("Success"));

    let ret = dourl(json!({}), "custom", "list").await.expect("list");
    assert_eq!(
        ret,
        json!([{
            "id": "cus",
            "v": [{
                "k": "psn",
                "m": "psn",
                "t": "string",
            }, {
                "k": "sn",
                "m": "sn",
                "t": "string",
            }, {
                "k": "usn",
                "m": "usn",
                "t": "string",
            }, {
                "k": "name",
                "m": "name",
                "t": "string",
            }]
        }])
    );
}
